#ifndef shared_h__20130915_0041_32
#define shared_h__20130915_0041_32

#include <memory>
#include <utility>
using std::shared_ptr;

template<class T>
class Factory {
public:
  template<class... U>
  shared_ptr<T> operator()(U&&... u) {
    return shared_ptr<T>(new T(std::forward<U>(u)...));
  }

};

#endif//shared_h__20130915_0041_32
